﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Medora.Model;
using Medora.Model.Basic;
using Medora.Model.Institutions;

namespace Medora.Services
{
    public interface IDepartmentsService
    {
        IEnumerable<Department> GetAll();
        IEnumerable<Department> GetByInstitution(Guid institutionId);
        IEnumerable<Department> GetPagedByInstitution(int pageSize, int page, Expression<Func<Department, bool>> expression, SortInfo sortInfo=null);
        IEnumerable<Department> GetPaged(int pageSize, int page);
        IEnumerable<Department> GetByInstitutionByUserId(Guid userId);
        IPagedEntities<Department> GetPagedByInstitutionByUserId(int pageSize, int page, Guid userId, DepartmentFilter filter=null, SortInfo sortInfo=null);
        bool Save(Guid userId, Department department);
        bool Delete(List<Guid> ids);
        int GetCount(Guid userId);
    }
}